package com.ityedao.Arrays类;

import java.util.Arrays;
import java.util.function.IntToDoubleFunction;

public class ArraysTest1 {
    public static void main(String[] args) {
        // 1、public static String toString(类型[] arr):返回数组的内容
        int[] arr = {10, 20, 30, 40, 50, 60};
        System.out.println(Arrays.toString(arr));

        // 2、public static 类型[] copyOfRange(类型[] arr, 起始索引, 结束索引):拷贝数组（指定范围，包前不包后）
        int[] arr2 = Arrays.copyOfRange(arr, 1, 4);
        System.out.println(Arrays.toString(arr2));

        // 3、public static copyOf(类型[] arr, int newLength): 拷贝数组，可以指定新数组的长度
        int[] arr3 = Arrays.copyOf(arr, 10);
        System.out.println(Arrays.toString(arr3));

        // 4、public static setAll(double[] array, IntToDoubleFunction generator):把数组中的原数据改为新数据有存进去。
        double[] prices = {99.8, 128, 100};
//        Arrays.setAll(prices, new IntToDoubleFunction() {
//            @Override
//            public double applyAsDouble(int value) {
//                return prices[value] * 0.8;
//            }
//        });
        // 优化：使用Lambda表达式
//        Arrays.setAll(prices, (int value) -> {
//                return prices[value] * 0.8;
//        });

        // 参数类型可以省略不写
//        Arrays.setAll(prices, (value) -> {
//            return prices[value] * 0.8;
//        });

        // 只有一个参数，参数类型可以省略，同时（）也可以省略
//        Arrays.setAll(prices, value -> {
//            return prices[value] * 0.8;
//        });

        // 方法体代码只有一行代码，可以省略大括号不写，同时要省略分号！此时，如果这行代码是return语句，也必须去掉return不写。
        Arrays.setAll(prices, value -> prices[value] * 0.8);

        System.out.println(Arrays.toString(prices));

        // 5、public static void sort(类型[] arr):对数组进行排序（默认是升序排序）
        Arrays.sort(prices);
        System.out.println(Arrays.toString(prices));
    }
}
